package cn.com.zero.manager.auth.constant;

import com.github.pagehelper.util.StringUtil;

import java.util.regex.Pattern;

/**
 * @author Huangyong
 * @version 1.0.0
 * @Description 参数校验规则
 * @createTime 2023-2-28 10:33
 */
public class ValidationRule {

    /** 登录名最小长度 */
    public static final int ADMIN_USERNAME_MIN = 5;

    /** 登录名最大长度 */
    public static final int ADMIN_USERNAME_MAX = 15;

    /** 名称最小长度 */
    public static final int ADMIN_NAME_MIN = 1;

    /** 名称最大长度 */
    public static final int ADMIN_NAME_MAX = 32;

    /** 手机号长度 */
    public static final int MOBILE_PHONE_LENGTH = 11;

    /** 备注信息长度 */
    public static final int REMARK_LENGTH = 1024;

    /** 角色名称最小长度 */
    public static final int ROLE_NAME_MIN = 1;

    /** 角色名称最大长度 */
    public static final int ROLE_NAME_MAX = 32;

    /**
     * 密码校验正则表达式<br/>
     * 表示任意字母、数字、下划线 6—32位
     */
    public static final String PASSWORD_EX = "^(\\w){6,32}$";

    /**
     * 登录名校验正则表达式<br/>
     * 表示由字母、数字、组成，最少包含一个字母的 5—15位字符串
     */
    public static final String USERNAME_EX = "^(?=[a-zA-Z0-9]*)(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{"+ADMIN_USERNAME_MIN+","+ADMIN_USERNAME_MAX+"}$";

    /** Email 验证正则 */
    public static final String EMAIL_EX = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

    /** 手机号验证正则 */
    public static final String MOBILE_EX = "^(1[0-9]{10})$";

    /**
     * 验证邮箱格式
     * @param email 电子邮箱
     * @return 验证结果 true 验证通过 false 验证不通过
     */
    public static boolean validateEmail(String email){
        return validate(email, EMAIL_EX);
    }

    /**
     * 验证手机号格式
     * @param mobile 手机号码
     * @return 验证结果 true 验证通过 false 验证不通过
     */
    public static boolean validateMobile(String mobile){
        return validate(mobile, MOBILE_EX);
    }

    /**
     * 验证字符串格式
     * @param str 待验证字符串
     * @param regEx 格式
     * @return 验证结果 true 验证通过 false 验证不通过
     */
    public static boolean validate(String str,String regEx){
        if(StringUtil.isEmpty(str)) {
            return false;
        }

        if(StringUtil.isEmpty(regEx)){
            return false;
        }

        return Pattern.compile(regEx).matcher(str).matches();
    }


}
